JavaScripti moodulite turvalisus: koodi isoleerimise strateegiad globaalsete rakenduste jaoks | MLOG | MLOG

AMD parandab jĂ”udlust vĂ”rreldes CommonJS-iga brauserikeskkondades, laadides mooduleid asĂŒnkroonselt. See pakub ka head koodi isolatsiooni tĂ€nu moodulipĂ”hisele struktuurile. Kuid sĂŒntaks vĂ”ib olla sĂ”naohtram kui teistel moodulisĂŒsteemidel.

5. ECMAScripti moodulid (ESM):

ESM on JavaScripti sisse ehitatud standardiseeritud moodulisĂŒsteem. See kasutab `import` ja `export` vĂ”tmesĂ”nu sĂ”ltuvuste haldamiseks. ESM-i toetavad kaasaegsed brauserid ja Node.js (teatava konfiguratsiooniga).

NĂ€ide:

            // moduleA.js

const secretKey = "verySecretKey";

export function encrypt(data) {
  // KrĂŒpteerimisloogika, mis kasutab secretKey'd
  return data.split('').reverse().join(''); // NĂ€itlik krĂŒpteerimine nĂ€ite jaoks
}

// moduleB.js

import { encrypt } from './moduleA.js';

const encryptedData = encrypt("Sensitive Data");
console.log(encryptedData);

            

ESM pakub mitmeid eeliseid, sealhulgas staatilist analĂŒĂŒsi (mis aitab vigu varakult avastada), puude raputamist (tree shaking, eemaldades kasutamata koodi, et vĂ€hendada paki suurust) ja asĂŒnkroonset laadimist. See pakub ka suurepĂ€rast koodi isolatsiooni, sest igal moodulil on oma skoop ja sĂ”ltuvused on selgesĂ”naliselt deklareeritud.

Koodi isoleerimise strateegiad lisaks moodulisĂŒsteemidele

Kuigi Ă”ige moodulisĂŒsteemi valimine on ĂŒlioluline, saab turvalisuse suurendamiseks rakendada tĂ€iendavaid koodi isoleerimise strateegiaid:

1. VĂ€himate privileegide printsiip:

See printsiip ĂŒtleb, et igal moodulil peaks olema ainult minimaalne tase privileege, mis on vajalikud tema ĂŒlesannete tĂ€itmiseks. VĂ€ltige moodulitele tarbetute lubade andmist. NĂ€iteks andmete kuvamise eest vastutaval moodulil ei tohiks olla juurdepÀÀsu tundlikule kasutajateabele ega administratiivsetele funktsioonidele.

NĂ€ide: MĂ”elgem veebirakendusele, kuhu kasutajad saavad faile ĂŒles laadida. Failide ĂŒleslaadimise eest vastutaval moodulil ei tohiks olla luba suvalise koodi kĂ€ivitamiseks serveris. See peaks suutma ainult salvestada ĂŒleslaaditud faili mÀÀratud kataloogi ja teha pĂ”hilisi valideerimiskontrolle.

2. Sisendi valideerimine ja puhastamine:

Valideerige ja puhastage alati kĂ”ik kasutaja sisendid enne nende töötlemist. See aitab ennetada mitmesuguseid rĂŒnnakuid, nagu saidiĂŒlene skriptimine (XSS) ja SQL-i sĂŒstimine (kui JavaScript suhtleb taustaprogrammi andmebaasiga). Sisendi valideerimine tagab, et andmed vastavad oodatud vormingule ja vahemikule, samas kui puhastamine eemaldab vĂ”i kodeerib potentsiaalselt pahatahtlikud mĂ€rgid.

NĂ€ide: Blogipostituse jaoks kasutaja esitatud teksti vastuvĂ”tmisel filtreerige vĂ€lja HTML-sildid ja pĂ”genemisjada erimĂ€rgid, et vĂ€ltida XSS-rĂŒnnakuid. Kasutage HTML-i sisu puhastamiseks teeke nagu DOMPurify.

3. Sisu turvalisuse poliitika (CSP):

CSP on brauseri turvamehhanism, mis vĂ”imaldab teil kontrollida ressursse, mida veebilehel on lubatud laadida. MÀÀratledes range CSP, saate takistada brauseril kĂ€ivitamast tekstisiseseid skripte, laadimast ressursse ebausaldusvÀÀrsetest allikatest ja teisi potentsiaalselt ohtlikke tegevusi. See aitab leevendada XSS-rĂŒnnakuid.

NÀide: CSP pÀis vÔib vÀlja nÀha selline: `Content-Security-Policy: default-src 'self'; script-src 'self' https://example.com; style-src 'self' https://example.com; img-src 'self' data:`

See poliitika lubab lehel laadida ressursse samast pÀritolust (`'self'`) ning skripte ja stiile saidilt `https://example.com`. Pilte saab laadida samast pÀritolust vÔi andme-URI-dena. Iga teine ressurss teisest pÀritolust blokeeritakse.

4. Alamressursside terviklikkus (SRI):

SRI vĂ”imaldab teil kontrollida, et faile, mida laadite kolmandate osapoolte CDN-idest (sisu edastamise vĂ”rgud), ei ole rikutud. Esitate oodatava faili sisu krĂŒptograafilise rĂ€si `